package jm.algorithm.recursion;

/**
 * @Description 汉诺塔
 * @date 2022/5/18 9:15
 */
public class Hanoi {
    public static void main(String[] args) {
        hanoi(2,"A","B","C");
    }

    /**
     * 将n个盘子从a挪动到c
     * @param n
     * @param a
     * @param b
     * @param c
     */
    private static void hanoi(int n, String a, String b, String c){
        if (n == 1) {
            move(n,a,c);
            return;
        }
        // 将 n-1 个盘子 从 a 挪到 b
        hanoi(n - 1, a, c, b);
        move(n,a,c);

        // 将 n-1 个盘子 从 b 挪到 c
        hanoi(n - 1, b, a ,c);
    }

    /**
     * 打印每次移动的编号起点和终点
     * @param number 编号
     * @param from 起点
     * @param to 终点
     */
    private static void move(int number, String from, String to){
        System.out.println(number + " 号" + "从 " + from + " 到 " + to);
    }

}
